package com.priox.sigar.client.dto;

import com.priox.sigar.domain.model.TipoCambio;

import java.math.BigDecimal;
import java.util.*;

/**
 * User: Matrix
 * Date: 19/01/13
 */
public class TipoCambioDTO extends AuditoriaDTO {

    private Date fecha;
    private String monedaId;
    private String monedaNombre;
    private BigDecimal valor;

    private String seleccionado;

    List<MonedaDTO> monedas;

    public TipoCambioDTO() {
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getSeleccionado() {
        return seleccionado;
    }

    public void setSeleccionado(String seleccionado) {
        this.seleccionado = seleccionado;
    }

    public List<MonedaDTO> getMonedas() {
        return monedas;
    }

    public void setMonedas(List<MonedaDTO> monedas) {
        this.monedas = monedas;
    }

    public List<TipoCambio> generarTipoCambio() {
        List<TipoCambio> result = new ArrayList<TipoCambio>();
        for (MonedaDTO monedaDTO : monedas) {
            TipoCambio tc = new TipoCambio();
            tc.setFecha(fecha);
            tc.setFechaCreacion(monedaDTO.getFechaCreacion());
            tc.setFechaModificacion(monedaDTO.getFechaModificacion());
            tc.setCreadoPor(monedaDTO.getCreadoPor());
            tc.setModificadoPor(monedaDTO.getModificadoPor());
            tc.setMonedaId(monedaDTO.getMonedaId());
            tc.setValor(monedaDTO.getValor());
            result.add(tc);
        }
        return result;
    }

    public void validar() {
        for (MonedaDTO monedaDTO : monedas) {
            if(monedaDTO.getValor()==null){
                throw new IllegalArgumentException("Ingresar el valor de la moneda "+monedaDTO.getNombre());
            }
        }
    }

    public String getMonedaId() {
        return monedaId;
    }

    public void setMonedaId(String monedaId) {
        this.monedaId = monedaId;
    }

    public BigDecimal getValor() {
        return valor;
    }

    public void setValor(BigDecimal valor) {
        this.valor = valor;
    }

    public String getMonedaNombre() {
        return monedaNombre;
    }

    public void setMonedaNombre(String monedaNombre) {
        this.monedaNombre = monedaNombre;

    }

  /*  private Integer getTipoCambioKey(){
        return fecha.hashCode()+monedaId.hashCode();
    }*/

    public Integer getTipoCambioKey() {
        int result=31;
        if(fecha!=null) result+=fecha.hashCode();
        if(monedaId!=null) result+=monedaId.hashCode();
        return result;
    }

    private Integer tipoCambioKey;


    public void setTipoCambioKey(Integer tipoCambioKey) {
        this.tipoCambioKey = tipoCambioKey;
    }
}
